package com.biz.primus.model.order.coupon.vo.consume;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * 返回所有券/积分付款方式的商品分摊
 *
 * @author Tiger Feng
 * @date 2017年11月16日
 */
@Data
public class BillDetailVO implements Serializable {
    private static final long serialVersionUID = -7570967226534082934L;
    // 订单号
    @JsonProperty("billno")
    private String billNo;
    // 销售渠道
    @JsonProperty("channel")
    private String channel;
    // 销售门店
    @JsonProperty("market")
    private String market;
    //终端号
    @JsonProperty("term_no")
    private String termNo;
    // 销售日期
    @JsonProperty("sale_date")
    private String saleDate;
    // 终端流水号
    @JsonProperty("term_invoiceno")
    private Long termInvoiceNo;
    // 终端收银员
    @JsonProperty("term_operator")
    private String termOperator;
    // 单据类型 1-销售 4-退货
    @JsonProperty("invoice_type")
    private InvoiceTypeEnum invoiceType;
    // 会员账号
    @JsonProperty("consumers_id")
    private String consumersId;
    // 会员类型
    @JsonProperty("consumers_type")
    private String consumersType;
    // 会员卡号
    @JsonProperty("consumers_cardno")
    private String consumersCardNo;
    // 应收运费
    @JsonProperty("freight")
    private Double freight;
    // 实际运费
    @JsonProperty("freight_fact")
    private Double freightFact;
    // 应付金额
    @JsonProperty("ought_pay")
    private Double oughtPay;
    // 四舍五入损益
    @JsonProperty("sswr_overage")
    private Double sswrOverage;
    // 实付金额
    @JsonProperty("fact_pay")
    private Double factPay;
    // 找零金额
    @JsonProperty("change_pay")
    private Double changePay;
    // 收货省份
    @JsonProperty("receive_province")
    private String receiveProvince;
    // 收货城市
    @JsonProperty("receive_city")
    private String receiveCity;
    // 收货地址
    @JsonProperty("receive_address")
    private String receiveAddress;
    // 收货人员
    @JsonProperty("receive_persion")
    private String receivePersion;
    // 配送方式
    @JsonProperty("receive_dist")
    private String receiveDist;
    // 销售明细表
    @JsonProperty("sell_details")
    private List<SellDetailVO> sellDetails;
    // 付款明细表
    @JsonProperty("sell_payments")
    private List<SellPaymentVO> sellPayments;
    // 是否货到付款(Y/N)
    @JsonProperty("codpay")
    private String codPay;
    // 订单状态
    @JsonProperty("order_status")
    private String orderStatus;
    // 换退/换销/退货对应的原单号
    @JsonProperty("original_billno")
    private String originalBillNo;
    // 会员标签
    @JsonProperty("consumers_data")
    private ConsDataVO consumersData;
    // 剩余付款
    @JsonProperty("remain_pay")
    private Double remainPay;
    //退货扣回计算模式 -- 退货专用
    @JsonProperty("return_mode")
    private ReturnModeEnum returnMode;

    @AllArgsConstructor
    public enum ReturnModeEnum{
        //退货扣回计算模式 -- 退货专用
        //0-全扣回
        //1-不扣回折扣类
        //2-不扣回折扣和用券类
        //3-全扣回但只提示
        ALL_BACK("0"),
        NO_BACK("1"),
        NO_BACK_USE("2"),
        ALL_BACK_INFO("3"),
        ;
        private String value;
        @Override
        public String toString() {
            return value;
        }
    }
    @AllArgsConstructor
    public enum InvoiceTypeEnum{
        //单据类型
        //1-销售 4-退货
        SELL("1"),
        RETURN("4");
        private String value;
        @Override
        public String toString() {
            return value;
        }
    }
}
